#ifndef PRUEBAESTRATEGIAHASHMOD_H_
#define PRUEBAESTRATEGIAHASHMOD_H_

#define private public

#include "../EstrategiaHashMod.h"
#include "../EstrategiaHashSHA1.h"
#include "ClaveAlumno.h"
#include "../IndiceHashExtensible.h"
#include "ClaveAlumno.h"

using namespace Toolkit;

void miniprueba()
{
	TipoSerializacion tSerializacion = BINARIO;
	EstrategiaHashSHA1 hashgrr;

	IndiceHashExtensible hashExtensible(1000, tSerializacion);
	hashExtensible.profundidad = 2;

	ClaveAlumno claveAlumno(84030, tSerializacion);

	stringstream stream;
	claveAlumno.serializar(stream);

	string clavegrrr = hashgrr.hash(stream.str());
	int direccion = hashExtensible.crearDireccion(claveAlumno);

	cout << direccion;
}


void pruebaMultiplesClavesHashMod()
{
	TipoSerializacion tSerializacion = BINARIO;
	EstrategiaHashMod estrategiaHash;

	for(int i = 0; i < 10; i++)
	{
		ClaveAlumno clave(i*5,tSerializacion);
		stringstream claveSerializada;
		clave.serializar(claveSerializada);

		string claveString = claveSerializada.str();
		cout << "El string clave es: ";
		cout << claveString;
		cout << "\n";

		string claveS = estrategiaHash.hash(claveString);
		cout << "La clave hasheada es: ";
		cout << claveS;
		cout << "\n";
	}
}

void pruebaMultiplesClavesSHA1()
{
	TipoSerializacion tSerializacion = BINARIO;
	EstrategiaHashSHA1 estrategiaHash;

	for(int i = 0; i < 10; i++)
	{
		ClaveAlumno clave(i*5,tSerializacion);
		stringstream claveSerializada;
		clave.serializar(claveSerializada);

		string claveString = claveSerializada.str();
		cout << "El string clave es: ";
		cout << claveString;
		cout << "\n";

		string claveS = estrategiaHash.hash(claveString);
		cout << "La clave hasheada es: ";
		cout << claveS;
		cout << "\n";
	}
}

#endif /* PRUEBAESTRATEGIAHASHMOD_H_ */
